home *** CD-ROM | disk | FTP | other *** search
/ 3D Game Programming All in One / 3D Game Programming All in One Disc.iso / 3D2E / RESOURCES / KOOB / common / client / metrics.cs < prev    next >
Text File  |  2005-11-23  |  5KB  |  158 lines

  1. //-----------------------------------------------------------------------------
  2. // Torque Game Engine 
  3. // Copyright (C) GarageGames.com, Inc.
  4. //-----------------------------------------------------------------------------
  5.  
  6. // load gui used to display various metric outputs
  7. exec("~/ui/FrameOverlayGui.gui");
  8.  
  9.  
  10. function fpsMetricsCallback()
  11. {
  12.    return " FPS: " @ $fps::real @ 
  13.           "  mspf: " @ 1000 / $fps::real;
  14. }
  15.  
  16. function terrainMetricsCallback()
  17. {
  18.    return fpsMetricsCallback() @
  19.           "  Terrain -" @
  20.           "  L0: " @ $T2::levelZeroCount @ 
  21.           "  FMC: " @ $T2::fullMipCount @ 
  22.           "  DTC: " @ $T2::dynamicTextureCount @
  23.           "  UNU: " @ $T2::unusedTextureCount @
  24.           "  STC: " @ $T2::staticTextureCount @
  25.           "  DTSU: " @ $T2::textureSpaceUsed @
  26.           "  STSU: " @ $T2::staticTSU @
  27.           "  FRB: " @ $T2::FogRejections;
  28. }
  29.  
  30. function videoMetricsCallback()
  31. {
  32.    return fpsMetricsCallback() @
  33.           "  Video -" @
  34.           "  TC: " @ $OpenGL::triCount0 + $OpenGL::triCount1 + $OpenGL::triCount2 + $OpenGL::triCount3 @ 
  35.           "  PC: " @ $OpenGL::primCount0 + $OpenGL::primCount1 + $OpenGL::primCount2 + $OpenGL::primCount3 @ 
  36.           "  T_T: " @ $OpenGL::triCount1 @ 
  37.           "  T_P: " @ $OpenGL::primCount1 @ 
  38.           "  I_T: " @ $OpenGL::triCount2 @ 
  39.           "  I_P: " @ $OpenGL::primCount2 @ 
  40.           "  TS_T: " @ $OpenGL::triCount3 @ 
  41.           "  TS_P: " @ $OpenGL::primCount3 @ 
  42.           "  ?_T: " @ $OpenGL::triCount0 @ 
  43.           "  ?_P: " @ $OpenGL::primCount0;
  44. }
  45.  
  46. function interiorMetricsCallback()
  47. {
  48.    return fpsMetricsCallback() @
  49.           "  Interior --" @
  50.           "  NTL: " @ $Video::numTexelsLoaded @
  51.           "  TRP: " @ $Video::texResidentPercentage @
  52.           "  INP: " @ $Metrics::Interior::numPrimitives @
  53.           "  INT: " @ $Matrics::Interior::numTexturesUsed @ 
  54.           "  INO: " @ $Metrics::Interior::numInteriors;
  55. }
  56.  
  57. function textureMetricsCallback()
  58. {
  59.    return fpsMetricsCallback() @
  60.           "  Texture --"@
  61.           "  NTL: " @ $Video::numTexelsLoaded @
  62.           "  TRP: " @ $Video::texResidentPercentage @
  63.           "  TCM: " @ $Video::textureCacheMisses;
  64. }
  65.  
  66. function waterMetricsCallback()
  67. {
  68.    return fpsMetricsCallback() @
  69.           "  Water --"@
  70.           "  Tri#: " @ $T2::waterTriCount @
  71.           "  Pnt#: " @ $T2::waterPointCount @
  72.           "  Hz#: " @ $T2::waterHazePointCount;
  73. }
  74.  
  75. function timeMetricsCallback()
  76. {
  77.    return fpsMetricsCallback() @ 
  78.          "  Time -- " @ 
  79.          "  Sim Time: " @ getSimTime() @ 
  80.          "  Mod: " @ getSimTime() % 32;
  81. }
  82.  
  83. function vehicleMetricsCallback()
  84. {
  85.    return fpsMetricsCallback() @
  86.           "  Vehicle --"@
  87.           "  R: " @ $Vehicle::retryCount @
  88.           "  C: " @ $Vehicle::searchCount @
  89.           "  P: " @ $Vehicle::polyCount @
  90.           "  V: " @ $Vehicle::vertexCount;
  91. }
  92.  
  93. function audioMetricsCallback()
  94. {
  95.    return fpsMetricsCallback() @
  96.           "  Audio --"@
  97.           " OH:  " @ $Audio::numOpenHandles @
  98.           " OLH: " @ $Audio::numOpenLoopingHandles @
  99.           " AS:  " @ $Audio::numActiveStreams @
  100.           " NAS: " @ $Audio::numNullActiveStreams @
  101.           " LAS: " @ $Audio::numActiveLoopingStreams @
  102.           " LS:  " @ $Audio::numLoopingStreams @
  103.           " ILS: " @ $Audio::numInactiveLoopingStreams @
  104.           " CLS: " @ $Audio::numCulledLoopingStreams;
  105. }
  106.  
  107. function debugMetricsCallback()
  108. {
  109.    return fpsMetricsCallback() @
  110.           "  Debug --"@
  111.           "  NTL: " @ $Video::numTexelsLoaded @
  112.           "  TRP: " @ $Video::texResidentPercentage @
  113.           "  NP:  " @ $Metrics::numPrimitives @
  114.           "  NT:  " @ $Metrics::numTexturesUsed @
  115.           "  NO:  " @ $Metrics::numObjectsRendered;
  116. }
  117.  
  118.  
  119.  
  120. function metrics(%expr)
  121. {
  122.    switch$(%expr)
  123.    {
  124.       case "audio":     %cb = "audioMetricsCallback()";
  125.       case "debug":     %cb = "debugMetricsCallback()";
  126.       case "interior":  
  127.          $fps::virtual = 0;
  128.          $Interior::numPolys = 0;
  129.          $Interior::numTextures = 0; 
  130.          $Interior::numTexels = 0; 
  131.          $Interior::numLightmaps = 0; 
  132.          $Interior::numLumels = 0; 
  133.          %cb = "interiorMetricsCallback()";
  134.  
  135.       case "fps":       %cb = "fpsMetricsCallback()";
  136.       case "time":      %cb = "timeMetricsCallback()";
  137.       case "terrain":   %cb = "terrainMetricsCallback()";
  138.       case "texture":   
  139.          GLEnableMetrics(true);
  140.          %cb = "textureMetricsCallback()";
  141.  
  142.       case "video":     %cb = "videoMetricsCallback()";
  143.       case "vehicle":   %cb = "vehicleMetricsCallback()";
  144.       case "water":     %cb = "waterMetricsCallback()";
  145.    }
  146.    
  147.    if (%cb !$= "")
  148.    {
  149.       Canvas.pushDialog(FrameOverlayGui, 1000);
  150.       TextOverlayControl.setValue(%cb);
  151.    }
  152.    else
  153.    {
  154.       GLEnableMetrics(false);
  155.       Canvas.popDialog(FrameOverlayGui);
  156.    }
  157. }
  158.